/**
 * @file UsuariosDisponibles.java
 * @brief Implementa la clase Usuarios disponibles
 *
 * Implementa la clase UsuariosDisponibles usada para saber que usuarios estaran
 * disponibles en una fecha concreta para realizar una accion.
 *
 * @author Antonio M. Gutierrez Martinez
 * @version 01.01
 *
 */

package Controlador;

import java.util.ArrayList;
import java.util.Date;


public class UsuariosDisponibles {
    Date _fechaInicio;
    Date _fechaFin;
    ArrayList<Integer> _id;

    /**
     * Constructor con parametros
     * @param fecha
     */
    public UsuariosDisponibles( Date fechaInicio , Date fechaFin ) {
        this._fechaInicio = fechaInicio;
        this._fechaFin = fechaFin;
        _id = new ArrayList<Integer>();
    }

    /**
     * Constructor por defecto
     */
    public UsuariosDisponibles( ) {
        this._fechaInicio = this._fechaFin = null;
        _id = new ArrayList<Integer>();
    }

    /**
     * Obtiene la fecha de inicio del intervalo
     * @return Date
     */
    public Date getFechaInicio() {
        return _fechaInicio;
    }

    /**
     * Obtiene la fecha de fin del intervalo
     * @return Date
     */
    public Date getFechaFin() {
        return _fechaFin;
    }

    /**
     * Obtiene los id's de los usuarios
     * @return ArrayList< Integer>
     */
    public ArrayList<Integer> getArrayId () {
        return _id;
    }

    /**
     * Añade la fecha inicio
     * @param f
     */
    public void setFechaInicio ( Date f ) {
        _fechaInicio = f;
    }

    /**
     * Añade la fecha fin
     * @param f
     */
    public void setFechaFin ( Date f ) {
        _fechaFin = f;
    }
    
    /**
     * Añade un id de usuario
     * @param id
     */
    public void setId( Integer id ) {
        _id.add(id);
    }

    /**
     * Elimina el elemento de la posicion indicada
     * @param id
     */
    public void deleteId ( int id ) {
        _id.remove(id);
    }

    /**
     * Añade un array de id's de usuario
     * @param array
     */
    public void setArrayId( ArrayList<Integer> array ) {
        _id = array;
    }

     /**
     * Permite buscar en un array de Usuarios disponibles
     * @param usus
     * @param inicio
     * @param fin
     */
    public static UsuariosDisponibles buscarPorRangoTiempo(UsuariosDisponibles [] usus,Date inicio, Date fin) {
        if(usus==null)
            return null;
        
        ArrayList<UsuariosDisponibles> disponibles = new ArrayList<UsuariosDisponibles>();

        for(int i=0;i<usus.length;i++) {
            if((inicio.before(usus[i]._fechaInicio) || inicio.equals(usus[i]._fechaInicio)) &&
                 (fin.after(usus[i]._fechaFin) || fin.equals(usus[i]._fechaFin)))  {
                return usus[i];
            }
        }
        
        return null;
    }


}
